zabbix创建监控项

        操作步骤:

        configuration–>Host–>选择对应的想要添加的监控项的主机的item选项–>create item。

        如图所示:

01

        监控项:

  • 名称:随便取,但是要有意义
  • 类型:zabbix agent 默认的
  • key:可以选择(能支持的key有很多),自己创建一个叫nginx.active
  • host interface:选择默认就好
  • type of information:监控项的数据类型,默认就是numberic
  • data type:decimal
  • Units:默认就是不设置,这个是单位值
  • Use Custom multipllier:用户收到的值都会乘以这个文本框内的值
  • update interval:默认是30s,一般不要低于60s,没有必要那么频繁
  • custom intervals:自定义创建时间间隔,比如固定的时间段监控的比较频繁,可以把interval在固定时间段调短
  • History storage period:历史数据存储的周期
  • trend storage period:趋势图要保存多久,默认是365,电商可能要存三年
  • show value:值映射
  • New Application:监控项的组。比如很多监控项可以划分到一个监控项的组里
  • Applications:如果上面的那个没写可以在这里选择一个
  • Populartes host inventory field:资产管理。如果选择auto会自动获取并映射过去自动填充
  • Description:必须要写,描述这个监控项是干什么用的

        这里就以监控nginx的活动连接数为例:

        修改nginx的配置文件,添加状态模块开启的一段配置

1
2
3
4
location /nginx_status {
stub_status on;
access_log off;
}

        然后重启nginx,在zabbix server端访问一下

1
2
3
4
5
curl www.17gp.com/nginx_status
Active connections: 2
server accepts handled requests
11049 11049 11676
Reading: 0 Writing: 2 Waiting: 0

        说明设置OK了,然后把这个Active connections取出来

1
2
curl -s http://www.17gp.com/nginx_status | awk 'NR==1 {print $NF}'
4

        在脚本这执行成功说明已经可以正常的取到nginx的动态连接数了,但是要想让zabbix去监控到这个数据,这就需要让zabbix去执行这个命令取到这个值。这里需要改一下zabbix的配置文件

1
vim /etc/zabbix/zabbix_agentd.conf

        将

1
Include=/etc/zabbix/zabbix_agentd

        修改为

1
Include=/etc/zabbix/zabbix_agentd/*.conf

        这个配置文件中的注释需要打开,目的是允许存放个人自定义的配置文件。比如写的nginx监控动态连接数的文件。而且这个目录默认是不存在的,需要创建。但是针对不同的系统版本文件目录名也不一样,比如在centos7上,这个目录就叫做zabbix_agentd.d,而且centos7上的目录是存在的,无需手动创建。

        创建监控nginx动态链接数的配置文件

1
2
3
4
cd /etc/zabbix/zabbix_agentd
cat nginx.conf
UserParameter=nginx.active,/usr/bin/curl -s "http://www.17gp.com/nginx_status" | awk 'NR==1 {print $NF}'

        其中UserParameter=nginx.active为定义key,nginx.active就是key的名称,逗号后面就是对应的这个key要执行什么命令,就是刚才在命令行执行的获取Active Connetions的命令,注意这里尽量要写绝对路径。

        在server端使用zabbix-get取值测试

1
2
3
yum install -y zabbix-get
zabbix_get -s 222.180.150.202 -p 10050 -k"nginx.active"
5

        测试成功,说明求值没有问题,zabbix也可以进行正常的调用。这样一个item就添加完成了。

        最后针对监控的项的参数设置再详细说明一下:

        Name:

        监控项的名称,可以使用如下宏变量:

        $1,$2…$9,这9个参数对应item key的参数位置。

        例如:Free disk space on $1

        如果 item key 为 “vfs.fs.size[/,free]”,那么对应的名称会变成“Free disk space on /”,$1对应了第一个参数“/”

        Type of Information:

        简单来说就是key返回的值的数据类型,主要有以下几种

  • Numeric (unsigned) – 64bit unsigned integer
  • Numeric (float) – floating point
  • numberCharacter – 字符串,最长 255 字节
  • Log – 日志文件. key 必须为 log[].
  • Text – 大小无限制的文本

        Units:

        前面说到这个是单位值,默认情况下,如果原始值超过1000,呢吗它会先除以1000并且显示出来。例如,设置了单位为bps并且收到的值为11102,将会显示为11.1Kbps

        如果单位备指定B(byte),Bps(bytes per second),呢么它会除以1024然后再显示数据。所以在监控流量和文件大小的时候不要用错单位,否则会出现数据不一致的情况。

        如下为时间单位:

  • unixtime - 转为 “yyyy.mm.dd hh:mm:ss”,只能使用正数
  • uptime - 转为 “hh:mm:ss”或者“N days,hh:mm:ss”

        例如,收到的值为881764(单位秒),它将会被显示为 “10d 4h 56m”,只会显示3个单元。

        有时候只会显示2个单元,例如“1m 5h”(不包含分、秒、毫秒),如果返回的值小于0.001,它只会显示“〈1 ms”经用单位:ms、rpm、RPM、%

        Units可以结合Use Custom multiple使用,乘以对应的倍数显示想要的数值。

        show value

        值映射,需要配置数字银蛇到字符的映射表。

        例如:

        1=>ttlsa.com 访问正常。如果 key 返回的数据为 1,那么监控页面不会显示 1,而是显示 ttlsa.com 访问正常。 key 返回的数据只能为整数,并且不做任何修改保存到数据库中。只有在显示的时候才会根据映射表来展示相应的内容。